package middleware

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
	"time"
)

func BeforeHandlers(c *gin.Context){
	start:=time.Now()
	fmt.Println("BeforeHandlers middleware start")
	//设置变量到Context的key中
	c.Set("mid","中间件")
	//执行Handler函数
	c.Next()
	fmt.Println("BeforeHandlers middleware end")
	t:=time.Since(start)
	fmt.Println(t)
}

//也可以使用闭包形式
func MiddleWare() gin.HandlerFunc{
	return func(c *gin.Context) {
		start:=time.Now()
		fmt.Println("middleware start")
		//设置变量到Context的key中
		c.Set("midd","MiddleWare")
		//执行Handler函数
		c.Next()
		// 中间件执行完后续的一些事情
		fmt.Println("middleware end")
		t:=time.Since(start)
		fmt.Println(t)
	}
}

func AuthMiddleWare() gin.HandlerFunc{
	return func(c *gin.Context) {
		cookie, err := c.Cookie("abc")
		if err == nil {
			if cookie == "go-gin" {
				c.Next()
				return
			}
		}
		if err != nil {
			// 返回错误
			c.JSON(http.StatusUnauthorized, gin.H{"error": err.Error()})
			// 若验证不通过，不再调用后续的函数处理,如果不适应abort，依然会执行后续函数
			c.Abort()
			return
		}
	}
}

